package java基础.java类的加载顺序;

/**
 * Created by Administrator on 2017/8/16.
 */
public class 类的加载顺序 {
    private String baseName = "base";
    public 类的加载顺序()
    {
        callName();
    }

    public void callName()
    {
        System. out. println(baseName);
    }

    static class Sub extends 类的加载顺序
    {
        private String baseName = "sub";
        public void callName()
        {
            System. out. println (baseName) ;
        }
    }
    public static void main(String[] args)
    {
        类的加载顺序 b = new Sub();
    }
}
//类的加载顺序。
//        (1) 父类静态代码块(包括静态初始化块，静态属性，但不包括静态方法)
//        (2) 子类静态代码块(包括静态初始化块，静态属性，但不包括静态方法 )
//        (3) 父类非静态代码块( 包括非静态初始化块，非静态属性 )
//        (4) 父类构造函数
//        (5) 子类非静态代码块 ( 包括非静态初始化块，非静态属性 )
//        (6) 子类构造函数
//其中：类中静态块按照声明顺序执行，并且(1)和(2)不需要调用new类实例的时候就执行了(意思就是在类加载到方法区的时候执行的)